{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 高德Web服务API\n",
    "\n",
    "#### API实践03：调用高德Web服务API文档中所有功能\n",
    "\n",
    "* 至少完成每一个模块中的一个子功能的API调用，封装成函数，开源到github/gitee上\n",
    "* 在调用每一个功能的同时，思考其背后是否含有ML、AI的功能（比如计算机视觉、语音识别、推荐算法等），并整理思考的结果，在调用API代码模块中用markdown说明。\n",
    "* 尝试设计一个简单的应用（不要求写代码），至少涉及3个API功能。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### API文档列表 \n",
    "\n",
    "[高德Web服务API文档](https://lbs.amap.com/api/webservice/summary)\n",
    "\n",
    "1）地理/逆地理编码：\n",
    "* 地理编码\n",
    "* 逆地理编码\n",
    "\n",
    "2）路径规划\n",
    "* 步行路径规划\n",
    "* 公交路径规划\n",
    "* 驾车路径规划\n",
    "* 骑行路径规划\n",
    "* 货车路径规划\n",
    "* 距离测量\n",
    "\n",
    "3）行政区域查询\n",
    "* 行政区域查询\n",
    "\n",
    "4）搜索POI\n",
    "* 关键字搜索\n",
    "* 周边搜索\n",
    "* 多边形搜索\n",
    "* ID查询\n",
    "\n",
    "5）IP定位\n",
    "\n",
    "6）批量请求接口\n",
    "\n",
    "7）静态地图\n",
    "\n",
    "8）坐标转换\n",
    "\n",
    "9）天气查询\n",
    "\n",
    "10）输入提示\n",
    "\n",
    "11）交通态势\n",
    "* 矩形区域交通态势\n",
    "* 圆形区域交通态势\n",
    "* 指定线路交通态势\n",
    "\n",
    "12）地理围栏\n",
    "* 创建围栏\n",
    "* 查询围栏\n",
    "* 更新围栏\n",
    "* 围栏启动&停止\n",
    "* 删除围栏\n",
    "* 围栏设备监控\n",
    "\n",
    "13）轨迹纠偏\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### API调用实践"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 地理/逆地理编码 \n",
    "\n",
    "> 地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口，提供结构化地址与经纬度之间的相互转化的能力。\n",
    "\n",
    "* 地理编码：将详细的结构化地址转换为高德经纬度坐标.\n",
    "* 逆地理编码：将经纬度转换为详细结构化的地址，且返回附近周边的POI、AOI信息 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import display, HTML\n",
    "import pandas as pd\n",
    "import json\n",
    "import requests\n",
    "key_chen = \"cc6c9ac1992664dd40c4533380275215\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'113.679287,23.632575'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "def geocode(address,city=None,batch=None,sig=None)->dict:\n",
    "    '''获取地理编码'''\n",
    "    url = 'https://restapi.amap.com/v3/geocode/geo?parameters'\n",
    "    params = {\n",
    "        'key':key_chen,\n",
    "        'address':address,\n",
    "        'city':city,\n",
    "        'batch':batch,\n",
    "        'sig':sig,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data\n",
    "\n",
    "zdnf = geocode(address = '广东省广州市中山大学南方学院')\n",
    "\n",
    "# 地理编码 location\n",
    "zdnf_geocode = zdnf['geocodes'][0]['location']\n",
    "zdnf_geocode"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 路径规划-步行路径规划walking"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 步行路径规划函数\n",
    "def walking(origin,destination,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/direction/walking?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'origin':origin,\n",
    "        'destination':destination,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>status</th>\n",
       "      <th>info</th>\n",
       "      <th>infocode</th>\n",
       "      <th>count</th>\n",
       "      <th>route</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>destination</th>\n",
       "      <td>1</td>\n",
       "      <td>ok</td>\n",
       "      <td>10000</td>\n",
       "      <td>1</td>\n",
       "      <td>113.586605,23.548852</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>origin</th>\n",
       "      <td>1</td>\n",
       "      <td>ok</td>\n",
       "      <td>10000</td>\n",
       "      <td>1</td>\n",
       "      <td>113.679287,23.632575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>paths</th>\n",
       "      <td>1</td>\n",
       "      <td>ok</td>\n",
       "      <td>10000</td>\n",
       "      <td>1</td>\n",
       "      <td>[{'distance': '16537', 'duration': '13230', 's...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            status info infocode count  \\\n",
       "destination      1   ok    10000     1   \n",
       "origin           1   ok    10000     1   \n",
       "paths            1   ok    10000     1   \n",
       "\n",
       "                                                         route  \n",
       "destination                               113.586605,23.548852  \n",
       "origin                                    113.679287,23.632575  \n",
       "paths        [{'distance': '16537', 'duration': '13230', 's...  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "从化地铁站 = geocode('广东省广州市从化区从化地铁站')\n",
    "从化地铁站_geocode = 从化地铁站['geocodes'][0]['location']\n",
    "zdnf_geocode = zdnf['geocodes'][0]['location']\n",
    "中大南方_从化地铁站 = walking(zdnf_geocode,从化地铁站_geocode)\n",
    "route = pd.DataFrame(中大南方_从化地铁站)\n",
    "route"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 行政区域查询\n",
    "\n",
    "> 根据用户输入的搜索条件可以帮助用户快速的查找特定的行政区域信息,例如：中国>山东省>济南市>历下区>舜华路街道（国>省>市>区>街道）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行政区域查询函数\n",
    "def district(keywords,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/config/district?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'keywords':keywords,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'count': '1',\n",
       " 'suggestion': {'keywords': [], 'cities': []},\n",
       " 'districts': [{'citycode': [],\n",
       "   'adcode': '440000',\n",
       "   'name': '广东省',\n",
       "   'center': '113.280637,23.125178',\n",
       "   'level': 'province',\n",
       "   'districts': [{'citycode': '0758',\n",
       "     'adcode': '441200',\n",
       "     'name': '肇庆市',\n",
       "     'center': '112.472529,23.051546',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0757',\n",
       "     'adcode': '440600',\n",
       "     'name': '佛山市',\n",
       "     'center': '113.122717,23.028762',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0754',\n",
       "     'adcode': '440500',\n",
       "     'name': '汕头市',\n",
       "     'center': '116.708463,23.37102',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0752',\n",
       "     'adcode': '441300',\n",
       "     'name': '惠州市',\n",
       "     'center': '114.412599,23.079404',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440300',\n",
       "     'name': '深圳市',\n",
       "     'center': '114.085947,22.547',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0756',\n",
       "     'adcode': '440400',\n",
       "     'name': '珠海市',\n",
       "     'center': '113.553986,22.224979',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0759',\n",
       "     'adcode': '440800',\n",
       "     'name': '湛江市',\n",
       "     'center': '110.364977,21.274898',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0662',\n",
       "     'adcode': '441700',\n",
       "     'name': '阳江市',\n",
       "     'center': '111.975107,21.859222',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0660',\n",
       "     'adcode': '441500',\n",
       "     'name': '汕尾市',\n",
       "     'center': '115.364238,22.774485',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0768',\n",
       "     'adcode': '445100',\n",
       "     'name': '潮州市',\n",
       "     'center': '116.632301,23.661701',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0750',\n",
       "     'adcode': '440700',\n",
       "     'name': '江门市',\n",
       "     'center': '113.094942,22.590431',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0766',\n",
       "     'adcode': '445300',\n",
       "     'name': '云浮市',\n",
       "     'center': '112.044439,22.929801',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0767',\n",
       "     'adcode': '442100',\n",
       "     'name': '东沙群岛',\n",
       "     'center': '116.887312,20.617512',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0668',\n",
       "     'adcode': '440900',\n",
       "     'name': '茂名市',\n",
       "     'center': '110.919229,21.659751',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0762',\n",
       "     'adcode': '441600',\n",
       "     'name': '河源市',\n",
       "     'center': '114.697802,23.746266',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0753',\n",
       "     'adcode': '441400',\n",
       "     'name': '梅州市',\n",
       "     'center': '116.117582,24.299112',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0769',\n",
       "     'adcode': '441900',\n",
       "     'name': '东莞市',\n",
       "     'center': '113.746262,23.046237',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0663',\n",
       "     'adcode': '445200',\n",
       "     'name': '揭阳市',\n",
       "     'center': '116.355733,23.543778',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0763',\n",
       "     'adcode': '441800',\n",
       "     'name': '清远市',\n",
       "     'center': '113.051227,23.685022',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0751',\n",
       "     'adcode': '440200',\n",
       "     'name': '韶关市',\n",
       "     'center': '113.591544,24.801322',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '020',\n",
       "     'adcode': '440100',\n",
       "     'name': '广州市',\n",
       "     'center': '113.280637,23.125178',\n",
       "     'level': 'city',\n",
       "     'districts': []},\n",
       "    {'citycode': '0760',\n",
       "     'adcode': '442000',\n",
       "     'name': '中山市',\n",
       "     'center': '113.382391,22.521113',\n",
       "     'level': 'city',\n",
       "     'districts': []}]}]}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 行政区域查询函数调用\n",
    "广东省 = district('广东省')\n",
    "广东省"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 搜索POI\n",
    "> 提供多种查询POI信息的能力，其中包括关键字搜索、周边搜索、多边形搜索、ID查询四种筛选机制。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 关键字搜索函数\n",
    "def place(keywords,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/place/text?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'keywords':keywords,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'count': '896',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'suggestion': {'keywords': [], 'cities': []},\n",
       " 'pois': [{'id': 'B0FFFVRCPK',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区',\n",
       "   'type': '地名地址信息;普通地名;区县级地名',\n",
       "   'typecode': '190105',\n",
       "   'biz_type': [],\n",
       "   'address': '从化区',\n",
       "   'location': '113.586605,23.548852',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B00140MVGC',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区殡仪馆',\n",
       "   'type': '生活服务;丧葬设施;殡仪馆',\n",
       "   'typecode': '071903',\n",
       "   'biz_type': [],\n",
       "   'address': '江埔街下罗村',\n",
       "   'location': '113.604344,23.519369',\n",
       "   'tel': '020-87980145;020-87983606',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': '3.0', 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B0FFGJMP4L',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化服务区',\n",
       "   'type': '道路附属设施;服务区;高速服务区',\n",
       "   'typecode': '180300',\n",
       "   'biz_type': [],\n",
       "   'address': '从化区',\n",
       "   'location': '113.647743,23.609634',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/7c8e4f652628972870219ea4949804e4',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/dfd59e64782f9c4ce7b3a8d6175eb9af',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/1678c9901b488c5d97ce8bf0d4e51d8e',\n",
       "     'provider': [],\n",
       "     'title': []}]},\n",
       "  {'id': 'B0014072CF',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '广州市从化区人民政府',\n",
       "   'type': '政府机构及社会团体;政府机关;区县级政府及事业单位',\n",
       "   'typecode': '130104',\n",
       "   'biz_type': [],\n",
       "   'address': '新城东路99号',\n",
       "   'location': '113.586399,23.548303',\n",
       "   'tel': '020-87928410;020-87922712',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/1e65d1e86ef2cd098bac94ec6dccdf10',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/55b5b700a31058fe016b405c',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/55b5b700a31058fe016b406b',\n",
       "     'provider': [],\n",
       "     'title': []}]},\n",
       "  {'id': 'B00140CW66',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区中医医院',\n",
       "   'type': '医疗保健服务;综合医院;综合医院',\n",
       "   'typecode': '090100',\n",
       "   'biz_type': [],\n",
       "   'address': '镇北路21号',\n",
       "   'location': '113.591328,23.550631',\n",
       "   'tel': '020-87939916;020-87936262',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': '3.0', 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/9984201538fdc638a84694a1e3157aea',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/55b5b651a31058fe016b1f68',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/7429cb08c72bdb257f222ad5eb3b108c',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B001408E94',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区人民法院',\n",
       "   'type': '政府机构及社会团体;公检法机构;法院',\n",
       "   'typecode': '130503',\n",
       "   'biz_type': [],\n",
       "   'address': '河滨北路628号',\n",
       "   'location': '113.606632,23.557615',\n",
       "   'tel': '020-87941335;020-87922335',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/55b5b5a3a31058fe016af79d',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/40968b7d4b2556c57ca036dc4cfec6d9',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/2d8291f07c68a998eaec8f7de87dedea',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B00140H91T',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '广州市公安局从化区分局',\n",
       "   'type': '政府机构及社会团体;公检法机构;公安警察',\n",
       "   'typecode': '130501',\n",
       "   'biz_type': [],\n",
       "   'address': '从城大道233号',\n",
       "   'location': '113.581061,23.538324',\n",
       "   'tel': '020-87972923',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/3a549a235934fe84c6014d442c1b4901',\n",
       "     'provider': [],\n",
       "     'title': '内景图'},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/bfc1bee53eedaf9e1abaadbfa4924709',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B0FFMBCSKA',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区体育场',\n",
       "   'type': '体育休闲服务;运动场馆;运动场所',\n",
       "   'typecode': '080100',\n",
       "   'biz_type': [],\n",
       "   'address': '新村北路63号附近',\n",
       "   'location': '113.585620,23.553082',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B0FFGFJY6Z',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '中共广州市从化区委党校',\n",
       "   'type': '科教文化服务;学校;学校',\n",
       "   'typecode': '141200',\n",
       "   'biz_type': [],\n",
       "   'address': '蓝田东路155号',\n",
       "   'location': '113.585757,23.545845',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/55b5b400a31058fe016a9b87',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/55b5b40ca31058fe016aa251',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/5847160d53621bcec0f911ddb5b9880f',\n",
       "     'provider': [],\n",
       "     'title': []}]},\n",
       "  {'id': 'B0FFJZISI0',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区中心医院-营养楼',\n",
       "   'type': '医疗保健服务;综合医院;综合医院',\n",
       "   'typecode': '090100',\n",
       "   'biz_type': [],\n",
       "   'address': '从城大道566号',\n",
       "   'location': '113.573700,23.551490',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B0FFLLC3JP',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区财政局',\n",
       "   'type': '政府机构及社会团体;政府机关;区县级政府及事业单位',\n",
       "   'typecode': '130104',\n",
       "   'biz_type': [],\n",
       "   'address': '河滨北路62号',\n",
       "   'location': '113.592598,23.547851',\n",
       "   'tel': '020-87929043;020-87941666',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B00140WEUX',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '广州市从化区教育局',\n",
       "   'type': '政府机构及社会团体;政府机关;区县级政府及事业单位',\n",
       "   'typecode': '130104',\n",
       "   'biz_type': [],\n",
       "   'address': '街口镇镇北路25号',\n",
       "   'location': '113.590882,23.549546',\n",
       "   'tel': '020-87926194',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/55b5b652a31058fe016b2039',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/36aa8242a2cf7ddf8252dbb04339a91c',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/a5cf2e2e926c88dd1b9d0cddcc6c668f',\n",
       "     'provider': [],\n",
       "     'title': []}]},\n",
       "  {'id': 'B00140UFFE',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区第七中学',\n",
       "   'type': '科教文化服务;学校;中学',\n",
       "   'typecode': '141202',\n",
       "   'biz_type': [],\n",
       "   'address': '城郊街向阳南路66号',\n",
       "   'location': '113.5935,23.555375',\n",
       "   'tel': '020-87955686;020-87956186',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/abd41fa4a4ca7e54388ef036c6235be9',\n",
       "     'provider': [],\n",
       "     'title': '外景图'},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/6538673659b30572bd63520e9b58b713',\n",
       "     'provider': [],\n",
       "     'title': '外景图'},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/fe8ca6f91ccce0bf2f2b59ed252eca14',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B00141SUH6',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区肉联厂',\n",
       "   'type': '公司企业;公司企业;公司企业',\n",
       "   'typecode': '170000',\n",
       "   'biz_type': [],\n",
       "   'address': '江埔街道',\n",
       "   'location': '113.622017,23.527844',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B00140NY9R',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区良口中学',\n",
       "   'type': '科教文化服务;学校;中学',\n",
       "   'typecode': '141202',\n",
       "   'biz_type': [],\n",
       "   'address': '新城南路附近',\n",
       "   'location': '113.733069,23.722228',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B00140UFFU',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区第四中学',\n",
       "   'type': '科教文化服务;学校;中学',\n",
       "   'typecode': '141202',\n",
       "   'biz_type': [],\n",
       "   'address': '教育路23号',\n",
       "   'location': '113.587783,23.554149',\n",
       "   'tel': '020-87922948;020-87980453',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/bfc387206b9bda986065ed03f5874c87',\n",
       "     'provider': [],\n",
       "     'title': '外景图'},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/68390691aff4c565724c9d678df3424a',\n",
       "     'provider': [],\n",
       "     'title': '外景图'},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/11f45c05d4fbd2afe756576f50f9bdb4',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B00141IYOT',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '吕田镇',\n",
       "   'type': '地名地址信息;普通地名;乡镇级地名',\n",
       "   'typecode': '190106',\n",
       "   'biz_type': [],\n",
       "   'address': '从化区',\n",
       "   'location': '113.953611,23.812355',\n",
       "   'tel': [],\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '2',\n",
       "   'poiweight': [],\n",
       "   'photos': []},\n",
       "  {'id': 'B0014086FC',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区第三中学',\n",
       "   'type': '科教文化服务;学校;中学',\n",
       "   'typecode': '141202',\n",
       "   'biz_type': [],\n",
       "   'address': '江埔街大江路19号(原从化卫校斜对面,从化汽车站乘1路公交车可直达学校门口)',\n",
       "   'location': '113.604749,23.542639',\n",
       "   'tel': '020-87975813',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/55b5b582a31058fe016af455',\n",
       "     'provider': [],\n",
       "     'title': []}]},\n",
       "  {'id': 'B00140NYAB',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区棋杆中学',\n",
       "   'type': '科教文化服务;学校;中学',\n",
       "   'typecode': '141202',\n",
       "   'biz_type': [],\n",
       "   'address': '鳌头镇棋杆街教育路1号',\n",
       "   'location': '113.507882,23.581836',\n",
       "   'tel': '020-87860009',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/4d3c4c90ba1fa770945806ee33470bd6',\n",
       "     'provider': [],\n",
       "     'title': '外景图'}]},\n",
       "  {'id': 'B0FFGFSETJ',\n",
       "   'parent': [],\n",
       "   'childtype': [],\n",
       "   'name': '从化区河滨小学',\n",
       "   'type': '科教文化服务;学校;小学',\n",
       "   'typecode': '141203',\n",
       "   'biz_type': [],\n",
       "   'address': '城中路2号',\n",
       "   'location': '113.589236,23.539708',\n",
       "   'tel': '020-87968970',\n",
       "   'distance': [],\n",
       "   'biz_ext': {'rating': [], 'cost': []},\n",
       "   'pname': '广东省',\n",
       "   'cityname': '广州市',\n",
       "   'adname': '从化区',\n",
       "   'importance': [],\n",
       "   'shopid': [],\n",
       "   'shopinfo': '0',\n",
       "   'poiweight': [],\n",
       "   'photos': [{'url': 'http://store.is.autonavi.com/showpic/55b5cd80a31058fe016c97e7',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/5702f0c50ebb36f1966fc722cd9ef57d',\n",
       "     'provider': [],\n",
       "     'title': []},\n",
       "    {'url': 'http://store.is.autonavi.com/showpic/55b5cd80a31058fe016c97e5',\n",
       "     'provider': [],\n",
       "     'title': []}]}]}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 关键字搜索函数调用\n",
    "中大南方 = place('广州从化区')\n",
    "中大南方"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### IP定位\n",
    "> 根据用户输入的IP地址，能够快速的帮用户定位IP的所在位置。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ip(ip,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/ip?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'ip':ip,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'province': '北京市',\n",
       " 'city': '北京市',\n",
       " 'adcode': '110000',\n",
       " 'rectangle': '116.0119343,39.66127144;116.7829835,40.2164962'}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myip = ip('121.89.193.92')\n",
    "myip"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 批量请求接口\n",
    "> 批量接口通过用户传入合并后的请求，同时返回多个请求的顺序集合，目前最多支持20个子请求。 返回的顺序与子请求的顺序一致。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def batch(ops,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/batch?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'ops':ops,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '0', 'info': 'INVALID_BATCH_PARAM', 'infocode': '20005'}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "place1 = place('中山大学南方学院')\n",
    "place2 = place('中山大学')\n",
    "batch = batch(place1,place2)\n",
    "batch"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 静态地图\n",
    "> 用户可以指定请求的地图位置、图片大小、以及在地图上添加覆盖物，如标签、标注、折线、多边形。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "def staticmap(location,zoom,size=None,scale=1,markers=None,labels=None,paths=None,traffic=0,page=None,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/staticmap?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'location':location,\n",
    "        'zoom':zoom,\n",
    "        'size':size,\n",
    "        'scale':scale,\n",
    "        'markers':markers,\n",
    "        'labels':labels,\n",
    "        'paths':paths,\n",
    "        'traffic':traffic,\n",
    "        'sig':sig,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = Image.open(BytesIO(response.content))\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.PngImagePlugin.PngImageFile image mode=P size=400x400 at 0x206F89C9E80>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zdnf_map = staticmap(location='113.679287,23.632575', zoom=12)\n",
    "zdnf_map"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 天气查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def weather(city,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'city':city,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1', 'count': '1', 'info': 'OK', 'infocode': '10000', 'lives': [[]]}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "today_cz = weather(521000)\n",
    "today_cz"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 坐标转换\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'info': 'ok',\n",
       " 'infocode': '10000',\n",
       " 'locations': '113.685752,23.638368'}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def tran(locations,coordsys,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/assistant/coordinate/convert?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'locations':locations,\n",
    "        'coordsys':'coordsys'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data    \n",
    "\n",
    "zdnf_tran = tran(locations='113.685752,23.638368',coordsys='baidu')\n",
    "zdnf_tran\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>中文名</th>\n",
       "      <th>adcode</th>\n",
       "      <th>citycode</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>中华人民共和国</td>\n",
       "      <td>100000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>北京市</td>\n",
       "      <td>110000</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>北京市市辖区</td>\n",
       "      <td>110100</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>东城区</td>\n",
       "      <td>110101</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>西城区</td>\n",
       "      <td>110102</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>朝阳区</td>\n",
       "      <td>110105</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>丰台区</td>\n",
       "      <td>110106</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>石景山区</td>\n",
       "      <td>110107</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>海淀区</td>\n",
       "      <td>110108</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>门头沟区</td>\n",
       "      <td>110109</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>房山区</td>\n",
       "      <td>110111</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>通州区</td>\n",
       "      <td>110112</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>顺义区</td>\n",
       "      <td>110113</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>昌平区</td>\n",
       "      <td>110114</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>大兴区</td>\n",
       "      <td>110115</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>怀柔区</td>\n",
       "      <td>110116</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>平谷区</td>\n",
       "      <td>110117</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>密云区</td>\n",
       "      <td>110118</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>延庆区</td>\n",
       "      <td>110119</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>天津市</td>\n",
       "      <td>120000</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>天津市市辖区</td>\n",
       "      <td>120100</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>和平区</td>\n",
       "      <td>120101</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>河东区</td>\n",
       "      <td>120102</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>河西区</td>\n",
       "      <td>120103</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>南开区</td>\n",
       "      <td>120104</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>河北区</td>\n",
       "      <td>120105</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>红桥区</td>\n",
       "      <td>120106</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>东丽区</td>\n",
       "      <td>120110</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>西青区</td>\n",
       "      <td>120111</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>津南区</td>\n",
       "      <td>120112</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3503</th>\n",
       "      <td>台湾省</td>\n",
       "      <td>710000</td>\n",
       "      <td>1886.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3504</th>\n",
       "      <td>香港特别行政区</td>\n",
       "      <td>810000</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3505</th>\n",
       "      <td>中西区</td>\n",
       "      <td>810001</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3506</th>\n",
       "      <td>湾仔区</td>\n",
       "      <td>810002</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3507</th>\n",
       "      <td>东区</td>\n",
       "      <td>810003</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3508</th>\n",
       "      <td>南区</td>\n",
       "      <td>810004</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3509</th>\n",
       "      <td>油尖旺区</td>\n",
       "      <td>810005</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3510</th>\n",
       "      <td>深水埗区</td>\n",
       "      <td>810006</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3511</th>\n",
       "      <td>九龙城区</td>\n",
       "      <td>810007</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3512</th>\n",
       "      <td>黄大仙区</td>\n",
       "      <td>810008</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3513</th>\n",
       "      <td>观塘区</td>\n",
       "      <td>810009</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3514</th>\n",
       "      <td>荃湾区</td>\n",
       "      <td>810010</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3515</th>\n",
       "      <td>屯门区</td>\n",
       "      <td>810011</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3516</th>\n",
       "      <td>元朗区</td>\n",
       "      <td>810012</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3517</th>\n",
       "      <td>北区</td>\n",
       "      <td>810013</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3518</th>\n",
       "      <td>大埔区</td>\n",
       "      <td>810014</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3519</th>\n",
       "      <td>西贡区</td>\n",
       "      <td>810015</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3520</th>\n",
       "      <td>沙田区</td>\n",
       "      <td>810016</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3521</th>\n",
       "      <td>葵青区</td>\n",
       "      <td>810017</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3522</th>\n",
       "      <td>离岛区</td>\n",
       "      <td>810018</td>\n",
       "      <td>1852.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3523</th>\n",
       "      <td>澳门特别行政区</td>\n",
       "      <td>820000</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3524</th>\n",
       "      <td>花地玛堂区</td>\n",
       "      <td>820001</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3525</th>\n",
       "      <td>花王堂区</td>\n",
       "      <td>820002</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3526</th>\n",
       "      <td>望德堂区</td>\n",
       "      <td>820003</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3527</th>\n",
       "      <td>大堂区</td>\n",
       "      <td>820004</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3528</th>\n",
       "      <td>风顺堂区</td>\n",
       "      <td>820005</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3529</th>\n",
       "      <td>嘉模堂区</td>\n",
       "      <td>820006</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3530</th>\n",
       "      <td>路凼填海区</td>\n",
       "      <td>820007</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3531</th>\n",
       "      <td>圣方济各堂区</td>\n",
       "      <td>820008</td>\n",
       "      <td>1853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3532</th>\n",
       "      <td>外国</td>\n",
       "      <td>900000</td>\n",
       "      <td>1900.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3533 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          中文名  adcode  citycode\n",
       "0     中华人民共和国  100000       NaN\n",
       "1         北京市  110000      10.0\n",
       "2      北京市市辖区  110100      10.0\n",
       "3         东城区  110101      10.0\n",
       "4         西城区  110102      10.0\n",
       "5         朝阳区  110105      10.0\n",
       "6         丰台区  110106      10.0\n",
       "7        石景山区  110107      10.0\n",
       "8         海淀区  110108      10.0\n",
       "9        门头沟区  110109      10.0\n",
       "10        房山区  110111      10.0\n",
       "11        通州区  110112      10.0\n",
       "12        顺义区  110113      10.0\n",
       "13        昌平区  110114      10.0\n",
       "14        大兴区  110115      10.0\n",
       "15        怀柔区  110116      10.0\n",
       "16        平谷区  110117      10.0\n",
       "17        密云区  110118      10.0\n",
       "18        延庆区  110119      10.0\n",
       "19        天津市  120000      22.0\n",
       "20     天津市市辖区  120100      22.0\n",
       "21        和平区  120101      22.0\n",
       "22        河东区  120102      22.0\n",
       "23        河西区  120103      22.0\n",
       "24        南开区  120104      22.0\n",
       "25        河北区  120105      22.0\n",
       "26        红桥区  120106      22.0\n",
       "27        东丽区  120110      22.0\n",
       "28        西青区  120111      22.0\n",
       "29        津南区  120112      22.0\n",
       "...       ...     ...       ...\n",
       "3503      台湾省  710000    1886.0\n",
       "3504  香港特别行政区  810000    1852.0\n",
       "3505      中西区  810001    1852.0\n",
       "3506      湾仔区  810002    1852.0\n",
       "3507       东区  810003    1852.0\n",
       "3508       南区  810004    1852.0\n",
       "3509     油尖旺区  810005    1852.0\n",
       "3510     深水埗区  810006    1852.0\n",
       "3511     九龙城区  810007    1852.0\n",
       "3512     黄大仙区  810008    1852.0\n",
       "3513      观塘区  810009    1852.0\n",
       "3514      荃湾区  810010    1852.0\n",
       "3515      屯门区  810011    1852.0\n",
       "3516      元朗区  810012    1852.0\n",
       "3517       北区  810013    1852.0\n",
       "3518      大埔区  810014    1852.0\n",
       "3519      西贡区  810015    1852.0\n",
       "3520      沙田区  810016    1852.0\n",
       "3521      葵青区  810017    1852.0\n",
       "3522      离岛区  810018    1852.0\n",
       "3523  澳门特别行政区  820000    1853.0\n",
       "3524    花地玛堂区  820001    1853.0\n",
       "3525     花王堂区  820002    1853.0\n",
       "3526     望德堂区  820003    1853.0\n",
       "3527      大堂区  820004    1853.0\n",
       "3528     风顺堂区  820005    1853.0\n",
       "3529     嘉模堂区  820006    1853.0\n",
       "3530    路凼填海区  820007    1853.0\n",
       "3531   圣方济各堂区  820008    1853.0\n",
       "3532       外国  900000    1900.0\n",
       "\n",
       "[3533 rows x 3 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# adcode查询表\n",
    "\n",
    "import pandas as pd\n",
    "from IPython.display import display, HTML\n",
    "df = pd.read_excel('AMap_adcode_citycode_2020_4_10.xlsx',encoding=\"utf8\", sheet_name=\"Sheet1\")\n",
    "a = df.to_dict()\n",
    "dataframe = pd.DataFrame ( a )\n",
    "dataframe\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 天气查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '0', 'info': 'INVALID_PARAMS', 'infocode': '20000'}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "def weather(city,extensions)->dict:\n",
    "    url='https://restapi.amap.com/v3/weather/weatherInfo?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'city':city,\n",
    "        'extensions':'extensions'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data  \n",
    "bz_weather = weather(city=110000,extensions='all')\n",
    "bz_weather"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 搜索提示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "import json\n",
    "def search(keywords,datatype,location=None,type=None,city=None,citylimit=None,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/assistant/inputtips?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'keywords':keywords,\n",
    "        'location':location,\n",
    "        'type':type,\n",
    "        'city':city,\n",
    "        'citylimit':citylimit,\n",
    "        'datatype':datatype,\n",
    "        'sig':sig,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'count': '10',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'tips': [{'id': 'B03DF0S5GM',\n",
       "   'name': '肯德基(中山路店)',\n",
       "   'district': '新疆维吾尔自治区乌鲁木齐市天山区',\n",
       "   'adcode': '650102',\n",
       "   'location': '87.616128,43.794341',\n",
       "   'address': '中山路297号',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B02B30LZZS',\n",
       "   'name': '肯德基(西双十贰城店)',\n",
       "   'district': '云南省西双版纳傣族自治州景洪市',\n",
       "   'adcode': '532801',\n",
       "   'location': '100.805775,22.004311',\n",
       "   'address': '勐海路2号西双十二城大润发1层',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B032C0M4K8',\n",
       "   'name': '肯德基(新华店)',\n",
       "   'district': '四川省攀枝花市东区',\n",
       "   'adcode': '510402',\n",
       "   'location': '101.715124,26.580603',\n",
       "   'address': '炳草岗大街68号摩尔百盛',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B03A305576',\n",
       "   'name': '肯德基(新亚欧店)',\n",
       "   'district': '甘肃省兰州市城关区',\n",
       "   'adcode': '620102',\n",
       "   'location': '103.818787,36.059686',\n",
       "   'address': '中山路120号亚欧商厦1层',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B03A30AZK8',\n",
       "   'name': '肯德基(火车站店)',\n",
       "   'district': '甘肃省兰州市城关区',\n",
       "   'adcode': '620102',\n",
       "   'location': '103.852084,36.034781',\n",
       "   'address': '兰州火车站',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B036705IXH',\n",
       "   'name': '肯德基(青年路店)',\n",
       "   'district': '云南省昆明市五华区',\n",
       "   'adcode': '530102',\n",
       "   'location': '102.715535,25.041674',\n",
       "   'address': '人民中路17号百盛购物广场1层',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B036705OGR',\n",
       "   'name': '肯德基(山姆店)',\n",
       "   'district': '云南省昆明市官渡区',\n",
       "   'adcode': '530111',\n",
       "   'location': '102.730680,25.013201',\n",
       "   'address': '春城路289号沃尔玛购物广场1层',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B001C7ZY8Y',\n",
       "   'name': '肯德基(温江DT店)',\n",
       "   'district': '四川省成都市温江区',\n",
       "   'adcode': '510115',\n",
       "   'location': '103.855515,30.688529',\n",
       "   'address': '光华大道三段1888号',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B0FFFABSC6',\n",
       "   'name': '肯德基(杭州路店)',\n",
       "   'district': '四川省眉山市东坡区',\n",
       "   'adcode': '511402',\n",
       "   'location': '103.831619,30.054029',\n",
       "   'address': '三苏大道168号',\n",
       "   'typecode': '050301',\n",
       "   'city': []},\n",
       "  {'id': 'B0FFFACQIG',\n",
       "   'name': '肯德基(环湖店)',\n",
       "   'district': '四川省眉山市东坡区',\n",
       "   'adcode': '511402',\n",
       "   'location': '103.846011,30.045037',\n",
       "   'address': '环湖东段100号大润发1楼',\n",
       "   'typecode': '050301',\n",
       "   'city': []}]}"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>status</th>\n",
       "      <th>count</th>\n",
       "      <th>info</th>\n",
       "      <th>infocode</th>\n",
       "      <th>tips</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B03DF0S5GM', 'name': '肯德基(中山路店)', 'dis...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B02B30LZZS', 'name': '肯德基(西双十贰城店)', 'd...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B032C0M4K8', 'name': '肯德基(新华店)', 'dist...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B03A305576', 'name': '肯德基(新亚欧店)', 'dis...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B03A30AZK8', 'name': '肯德基(火车站店)', 'dis...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B036705IXH', 'name': '肯德基(青年路店)', 'dis...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B036705OGR', 'name': '肯德基(山姆店)', 'dist...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B001C7ZY8Y', 'name': '肯德基(温江DT店)', 'di...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B0FFFABSC6', 'name': '肯德基(杭州路店)', 'dis...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>OK</td>\n",
       "      <td>10000</td>\n",
       "      <td>{'id': 'B0FFFACQIG', 'name': '肯德基(环湖店)', 'dist...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  status count info infocode  \\\n",
       "0      1    10   OK    10000   \n",
       "1      1    10   OK    10000   \n",
       "2      1    10   OK    10000   \n",
       "3      1    10   OK    10000   \n",
       "4      1    10   OK    10000   \n",
       "5      1    10   OK    10000   \n",
       "6      1    10   OK    10000   \n",
       "7      1    10   OK    10000   \n",
       "8      1    10   OK    10000   \n",
       "9      1    10   OK    10000   \n",
       "\n",
       "                                                tips  \n",
       "0  {'id': 'B03DF0S5GM', 'name': '肯德基(中山路店)', 'dis...  \n",
       "1  {'id': 'B02B30LZZS', 'name': '肯德基(西双十贰城店)', 'd...  \n",
       "2  {'id': 'B032C0M4K8', 'name': '肯德基(新华店)', 'dist...  \n",
       "3  {'id': 'B03A305576', 'name': '肯德基(新亚欧店)', 'dis...  \n",
       "4  {'id': 'B03A30AZK8', 'name': '肯德基(火车站店)', 'dis...  \n",
       "5  {'id': 'B036705IXH', 'name': '肯德基(青年路店)', 'dis...  \n",
       "6  {'id': 'B036705OGR', 'name': '肯德基(山姆店)', 'dist...  \n",
       "7  {'id': 'B001C7ZY8Y', 'name': '肯德基(温江DT店)', 'di...  \n",
       "8  {'id': 'B0FFFABSC6', 'name': '肯德基(杭州路店)', 'dis...  \n",
       "9  {'id': 'B0FFFACQIG', 'name': '肯德基(环湖店)', 'dist...  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "results = search(keywords='肯德基',datatype=all)\n",
    "display(results)\n",
    "dataframe = pd.DataFrame ( results )\n",
    "display(dataframe)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 交通态势\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "def tfcondition(location,level,extensions,radius,sig=None)->dict:\n",
    "    url = 'https://restapi.amap.com/v3/traffic/status/rectangle?parameters'\n",
    "    params={\n",
    "        'key':key_chen,\n",
    "        'level':level,\n",
    "        'location':location,\n",
    "        'radius':radius,\n",
    "        'extensions':extensions,\n",
    "        'sig':sig,\n",
    "        'output':'json'\n",
    "    }\n",
    "    response = requests.get(url,params=params)\n",
    "    data = response.json()\n",
    "    return data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '0', 'info': 'INVALID_PARAMS', 'infocode': '20000'}"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "BJtf = tfcondition(location='116.439914,39.907851',level=5,extensions='base',radius=1000)\n",
    "BJtf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
